package com.alex.wechat.mp.account.service;

import java.io.Serializable;

import org.jeecgframework.core.common.model.json.AjaxJson;
import org.jeecgframework.core.common.service.CommonService;

import com.alex.wechat.mp.account.entity.WxAccountEntity;
import com.alex.wechat.mp.config.WxContext;
import com.gomore.jeecg.common.ServiceException;

public interface WxAccountServiceI extends CommonService {

  @Override
  public <T> void delete(T entity);

  @Override
  public <T> Serializable save(T entity);

  @Override
  public <T> void saveOrUpdate(T entity);

  /**
   * 默认按钮-sql增强-新增操作
   * 
   * @param id
   * @return
   */
  public boolean doAddSql(WxAccountEntity t);

  /**
   * 默认按钮-sql增强-更新操作
   * 
   * @param id
   * @return
   */
  public boolean doUpdateSql(WxAccountEntity t);

  /**
   * 默认按钮-sql增强-删除操作
   * 
   * @param id
   * @return
   */
  public boolean doDelSql(WxAccountEntity t);

  public String getAccessToken();

  public String getAccessToken(String id);

  /**
   * 通过微信原始ID，获取系统微信公众账号配置信息
   * 
   * @param originalId
   * @return
   */
  public WxAccountEntity getAccountByOriginalId(String originalId);

  /**
   * 通过AppID，获取系统微信公众账号配置信息
   * 
   * @param appId
   * @return
   */
  public WxAccountEntity getAccountByAppId(String appId);

  /**
   * 通过openid，获取系统微信公众账号配置信息
   * 
   * @param openId
   * @return
   */
  public WxAccountEntity getAccountByOpenId(String openId);

  public AjaxJson resetAccessToken(String id) throws ServiceException;

  /**
   * 取得当前登录用户的活动公众号。
   * 
   * @return 如果没有找到公众号，则返回 {@link WxContext#emptyWxAccount()}.
   */
  public WxAccountEntity getWxAccountByLogin();

  /**
   * 将指定的公众号置当前活动账户。
   * 
   * @param id
   * @throws ServiceException
   */
  public void active(String id) throws ServiceException;
}
